Multi-processor core microcontrollers may be designed with entirely separated cores and each core may operate on a different system clock. Thus, to provide for the ability to communicate between the two cores, a specific communication interface is necessary. In particular, a means to quickly and reliably move small amounts of data across a clock boundary between two processors is needed. Solution had to be fully configurable yet be efficient with regards to silicon use.